package cn.mujiankeji.mbrowser.功能.广告拦截.项目

import cn.mujiankeji.mbrowser.功能.广告拦截.Adblock规则解析操作
import cn.mujiankeji.mbrowser.工具.操作.地址操作

/**
 * 请求访问的地址信息
 * by Jen. 2020.10.
 */
class 拦截地址信息 {
    // 完整链接
    var url = ""

    // 主机地址 ， www.baidu.com  [baidu.com]=域名 ， [www.baidu.com]=主机地址
    var host = ""

    // 获取所有关键词ID
    var keys = ArrayList<Long>()

    // 文件类型 AdKeyType.TYPE_S 为零则非文件
    var ftype = ""

    constructor()
    constructor(url : String){
        this.url = url
        this.host = 地址操作.取完整主机名(url)

        // 1IP > 2 域名/文件名 > 3 端口(:xxxx) >  4 段落(节) > 5 子域名 （双管线或单管线或http://xxx. xxx ） > 左斜线后5个连续值
        val ips = Adblock规则解析操作.getIps(url)
        for (ip in ips) {
            this.keys.add(Adblock规则解析操作.getIpKey(ip))
        }

        // 域名
        val yms = Adblock规则解析操作.getYuMings(url)
        for (ym in yms) {
            this.keys.add(Adblock规则解析操作.getYuMingKey(ym))
        }

        // 端口
        val dks = Adblock规则解析操作.getDuanKous(url)
        for (dk in dks) {
            this.keys.add(Adblock规则解析操作.getDuanKouKey(dk).toLong())
        }

        // 段落 短节
        val dls = Adblock规则解析操作.getJieList(url)
        for (dl in dls) {
            this.keys.add(Adblock规则解析操作.getJieKey(dl).toLong())
        }

        val 开始值 = Adblock规则解析操作.getKaishiKey(url)
        if (开始值 != null) this.keys.add(开始值.toLong())

        val 左斜线 = Adblock规则解析操作.getZuoXieXians(url)
        for (z in 左斜线) {
            this.keys.add(Adblock规则解析操作.getZuoXieXianKey(z).toLong())
        }

        // 右斜线
        val 右斜线 = Adblock规则解析操作.getYouXieXians(url)
        for (y in 右斜线) {
            this.keys.add(Adblock规则解析操作.getYouXieXianKey(y).toLong())
        }

        // 高级

        val 后缀 = 地址操作.取后缀(url)
        if (地址操作.是否为图片格式(后缀)) this.ftype = Adblock规则解析操作.TYPE_S_IMAGE
        else if (地址操作.是否为视频格式(后缀)) this.ftype = Adblock规则解析操作.TYPE_S_MEDIA
        else {
            when(后缀){
                "css" -> this.ftype = Adblock规则解析操作.TYPE_S_STYLESHEET
                "js","xjs" -> this.ftype = Adblock规则解析操作.TYPE_S_SCRIPT
                "flash","java" -> this.ftype = Adblock规则解析操作.TYPE_S_OBJECT
            }
        }
    }
}